/**
 * 接口方式和抽象类写法类似 abstract
 *  类实现 implements
 *
 *  在 Dart 中，一个类可以实现多个接口。如果这些接口中有相同的方法签名（即方法名、参数列表和返回类型都相同），
 *  那么你只需要在实现类中提供一次该方法的实现即可。这个单一实现将被所有相关的接口调用所共享。
 *  但是，如果你希望针对每个接口提供不同的行为，Dart 并不直接支持这样的机制，
 *  因为 Dart 不允许根据调用者的类型来区分方法调用。不过，你可以通过一些设计模式或技巧来间接达到类似的效果。
 *
 *  Dart 中有效地处理多个接口中有相同方法的情况，并根据需要提供不同的实现
 *
 */

//接口
abstract class A {
  void info();
}

abstract class B {
  void info();
}

abstract class C {
  void show();
}

class User implements A, B, C {
  bool _isaa =true;
  void switchInfo(bool sf){
    _isaa=sf;
  }
  void _aa(){
    print('a===');
  }

  void _bb(){
    print('bb');
  }
  @override
  void info() {
    if(_isaa){
      _aa();
    }else{
      _bb();
    }

  }

  @override
  void show() {}
}


void main(){
  var m =User();
  m.show();
  m.info();
  m.switchInfo(false);
  m.info();

}